package mka.puzzle.shape;

import java.util.ArrayList;

/***
 * Conic class.
 * 
 * @version 20131124
 * 
 * @author NguyenBB
 * 
 * The General equation for a Conic: Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0
 * @param <T>
 */
public abstract class Conic extends Shape {
	/**
	 * getName.
	 * 
	 * @return String
	 */
	public String getName() {
		return "Conic";
	}
	
	/***
	 * Determine a point belongs the bound of shape or not.
	 */
	public abstract boolean containBound(Point p);
	
	/***
	 * containShape.
	 * 
	 * Determine a point belongs the shape or not.
	 * 
	 * @param p Point
	 * @return boolean
	 */
	public abstract boolean containShape(Point p);
	
	/***
	 * allPointBound.
	 * 
	 * Return a list point belongs the bound of shape.
	 * 
	 * @return ArrayList<Point>
	 */
	public abstract ArrayList<Point> allPointBound();
	
	/**
	 * allPointShape.
	 * 
	 * Return a list point belongs the shape.
	 * 
	 * @return ArrayList<Point>
	 */
	public abstract ArrayList<Point> allPointShape();
}
